********************************************************************************
* Rainer Kotschy
* Health Dynamics Shape Life-Cycle Incomes
* Replication Material


cd
clear all
set more off


* Install necessary software packages (see README file)
*ssc install ranktest
*ssc install ivreg2
*ssc install ftools
*ssc install moremata
*ssc install reghdfe
*ssc install ivreghdfe
*ssc install estout
*ssc install spmap
*ssc install shp2dta
*ssc install mif2dta


********************************************************************************
* Figure 1: The Cardiovascular Revolution Boosted Adult Health


* Figures 1(a) and 1(b): Deaths (%) Due to Cardiovascular Diseases in 1960 and 2012

use "cvd_mort_by_age.dta", clear

g age_id =.

replace age_id = 1 if age == "age_below_1"
replace age_id = 2 if age == "age_1_4"
replace age_id = 3 if age == "age_5_14"
replace age_id = 4 if age == "age_15_24"
replace age_id = 5 if age == "age_25_34"
replace age_id = 6 if age == "age_35_44"
replace age_id = 7 if age == "age_45_54"
replace age_id = 8 if age == "age_55_64"
replace age_id = 9 if age == "age_65_74"
replace age_id = 10 if age == "age_75_84"
replace age_id = 11 if age == "age_85_plus"

la def age_id_lab ///
	1 "<1" ///
	2 "1-4" ///
	3 "5-14" ///
	4 "15-24" ///
	5 "25-34" ///
	6 "35-44" ///
	7 "45-54" ///
	8 "55-64" ///
	9 "65-74" ///
	10 "75-84" ///
	11 "85+"

la val age_id age_id_lab


* Figure 1(a): Deaths (%) Due to Cardiovascular Diseases in 1960

g lab_1960 = string(abs_cvd_1960, "%7.0f")

#delimit ;

twoway
bar pct_cvd_1960 age_id,
	barw(.6) color(navy) finten(100)
	ytitle("Percent of deaths due to cardiovascular diseases in 1960"
		"(number of incidents above bars)", size(medsmall))
	ylabel(0(10)80, nogrid angle(0) format(%3.0f))
	xlabel(1(1)11, angle (45) valuelabel labgap(1))
	legend(off)
	xtitle("")
	graphregion(color(white)) bgcolor(white)
|| scatter pct_cvd_1960 age_id, msymbol(none)
	mlab(lab_1960) mlabpos(12) mlabcolor(black)
	legend(off)
;

#delimit cr


* Figure 1(b): Deaths (%) Due to Cardiovascular Diseases in 2012

g lab_2012 = string(abs_cvd_2012, "%7.0f")

#delimit ;

twoway
bar pct_cvd_2012 age_id,
	barw(.6) color(navy) finten(100)
	ytitle("Percent of deaths due to cardiovascular diseases in 2012"
		"(number of incidents above bars)", size(medsmall))
	ylabel(0(10)80, nogrid angle(0) format(%3.0f))
	xlabel(1(1)11, angle (45) valuelabel labgap(1))
	legend(off)
	xtitle("")
	graphregion(color(white)) bgcolor(white)
|| scatter pct_cvd_2012 age_id, msymbol(none)
	mlab(lab_2012) mlabpos(12) mlabcolor(black)
	legend(off)
;

#delimit cr


* Figure 1(c): Age-Adjusted Cardiovascular Disease Mortality

use "cvd_mort_over_time.dta", clear

#delimit ;

twoway
line chd_mort_m year if year <= 2000,
	lwidth(medthick) lcolor(dknavy) 
|| line chd_mort_f year if year <= 2000,
	lwidth(medthick) lcolor(ebblue)
|| lfit chd_mort_m year if year <= 1969,
	lcolor(cranberry) lwidth(medthick) lpattern(shortdash)
|| lfit chd_mort_m year if year >= 1970 & year <= 2000,
	lcolor(cranberry) lwidth(medthick) lpattern(shortdash)
|| lfit chd_mort_f year if year <= 1969,
	lcolor(cranberry) lwidth(medthick) lpattern(shortdash)
|| lfit chd_mort_f year if year >= 1970 & year <= 2000,
	lcolor(cranberry) lwidth(medthick) lpattern(shortdash)
	ytitle("Age-adjusted mortality rate per 100,000"
		"from coronary heart disease")
	ysca(titlegap(3))
	ylabel( , nogrid format(%2.0f) angle(0))
	xtitle("Year")
	xsca(titlegap(3))
	xlabel(1950(10)2000)
	legend(ring(0) position(1) order(1 2)  rows(2) cols(1)
		label(1 "Men") label(2 "Women"))
	graphregion(color(white)) bgcolor(white)		
;

#delimit cr


* Figure 1(d): Life Expectancy at Age 30 in the United States

use "life_exp_30_over_time.dta", clear

#delimit ;

twoway
connect life_exp_30 year,
	lwidth(medthick)
	ytitle("Life expectancy at age 30")
	ysca(titlegap(3))
	ylabel(42(2)50, nogrid format(%2.0f) angle(0))
	xtitle("Year")
	xsca(titlegap(2.5))
	xlabel(1950(10)2000)
	legend(off)
	graphregion(color(white)) bgcolor(white)		
;	

#delimit cr


********************************************************************************
* Figure 2: Geographic Dispersion of Cardiovascular Disease Mortality in 1960


use "us_state_panel_1950_2000.dta", clear
keep if year == 1960
sort state
egen mid = group(state)
save "us_state_map_1960.dta", replace

shp2dta using "us_states", database("us_map_db.dta") ///
	coordinates("us_map_coord.dta") genid(mid) replace

use "us_map_db.dta", clear
sort STATENAM
egen id = group(STATENAM)
keep id mid STATENAM
ren STATENAM state_name
merge 1:1 id using "us_state_map_1960.dta", nogen
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
form mortality_cvd_1960 %5.3f

spmap mortality_cvd_1960 using "us_map_coord.dta", ///
	id(mid) fcolor(Blues2) lego(lohi) legtitle("Mortality Per 100 Persons")
	
	
********************************************************************************
* Table 1: Effect of Adult Health on Income Per Person


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)


* Table 1(a): Second stage (2SLS)

* Column 1: Wage income per person 15-64, no controls
ivreg2 D.lnincwage1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) [aw=pop_1960], cl(id)
est sto table_1a1
* Column 2: Wage income per person 15-64, controls for income and education
ivreg2 D.lnincwage1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 [aw=pop_1960], cl(id)
est sto table_1a2
* Column 3: Wage income per person 15-64, full controls
ivreg2 D.lnincwage1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_1a3
* Column 4: Total income per person 15-64, no controls
ivreg2 D.lninctot1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) [aw=pop_1960], cl(id)
est sto table_1a4
* Column 5: Total income per person 15-64, controls for income and education
ivreg2 D.lninctot1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 [aw=pop_1960], cl(id)
est sto table_1a5
* Column 6: Total income per person 15-64, full controls
ivreg2 D.lninctot1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_1a6
* Display results
esttab table_1a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_2060) scalars(widstat) sfmt(a1) obslast nonotes compress


* Table 1(b): Reduced form

* Column 1: Wage income per person 15-64, no controls
reg D.lnincwage1564 D.mort_cvd_2000 [aw=pop_1960], cl(id)
est sto table_1b1
* Column 2: Wage income per person 15-64, controls for income and education
reg D.lnincwage1564 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 [aw=pop_1960], cl(id)
est sto table_1b2
* Column 3: Wage income per person 15-64, full controls
reg D.lnincwage1564 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_1b3
* Column 4: Total income per person 15-64, no controls
reg D.lninctot1564 D.mort_cvd_2000 [aw=pop_1960], cl(id)
est sto table_1b4
* Column 5: Total income per person 15-64, controls for income and education
reg D.lninctot1564 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 [aw=pop_1960], cl(id)
est sto table_1b5
* Column 6: Total income per person 15-64, full controls
reg D.lninctot1564 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_1b6
* Display results
esttab table_1b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.mort_cvd_2000) nonotes compress


* Table 1(c): First stage

* Column 1: Life expectancy, no controls
reg D.ln_life_exp_2060 D.mort_cvd_2000 [aw=pop_1960], cl(id)
est sto table_1c1
* Column 2: Life expectancy, controls for income and education
reg D.ln_life_exp_2060 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 [aw=pop_1960], cl(id)
est sto table_1c2
* Column 3: Life expectancy, full controls
reg D.ln_life_exp_2060 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_1c3
* Column 4: Life expectancy, no controls
reg D.ln_life_exp_2060 D.mort_cvd_2000 [aw=pop_1960], cl(id)
est sto table_1c4
* Column 5: Life expectancy, controls for income and education
reg D.ln_life_exp_2060 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 [aw=pop_1960], cl(id)
est sto table_1c5
* Column 6: Life expectancy, full controls
reg D.ln_life_exp_2060 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_1c6
* Display results
esttab table_1c*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.mort_cvd_2000) nonotes compress


********************************************************************************
* Figure 3: Partial Correlations Before and After the Beginning of the Cardiovascular Revolution


use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"


* Figure 3(a): Reduced Form 1950-1960

preserve

#delimit ;

keep if year == 1950 | year == 1960;
xtset id year, delta(10);

reg D.lnincwage1564 D.mort_cvd_1950 D.lnincwage1564_1950 D.shcoll_1950 D.mort_other_1950 [aw=pop_1960] if year == 1960, cl(id);
	loc b : di %04.2f _b[D.mort_cvd_1950];
	di `b';
	loc se : di %04.2f _se[D.mort_cvd_1950];
	di `se';
	loc t : di %04.2f _b[D.mort_cvd_1950] / _se[D.mort_cvd_1950];
	di `t';

avplot D.(mort_cvd_1950),
	ytitle("E( Change in log wages 1950-1960 | X )", size(medsmall))
	ysca(titlegap(2))
	ylab(-.2(.1).2 0 "0", nogrid angle(0) format(%4.2f))
	yline(0, lcolor(ltbluishgray))
	xtitle("E( Predicted change in cardiovascular disease mortality 1960-2000 | X )", size(medsmall))
	xlab(-.08(.04).08 0 "0", nogrid angle(0) format(%4.2f))
	xsca(titlegap(2))
	lcolor(cranberry) mlab(state_code) mlabs(small)
	rlopts(lcolor(cranberry))
	text(-.15 .05 `"coef = `b', se = `se', t = `t'"', size(medsmall)) note("")
	graphregion(color(white)) bgcolor(white)
;

#delimit cr	
	
restore


* Figure 3(b): Reduced Form 1960-2000

preserve

#delimit ;

keep if year == 1960 | year == 2000;
xtset id year, delta(40);

reg D.lnincwage1564 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960] if year == 2000, cl(id);
	loc b : di %04.2f _b[D.mort_cvd_2000];
	di `b';
	loc se : di %04.2f _se[D.mort_cvd_2000];
	di `se';
	loc t : di %04.2f _b[D.mort_cvd_2000] / _se[D.mort_cvd_2000];
	di `t';

avplot D.(mort_cvd_2000),
	ytitle("E( Change in log wages 1960-2000 | X )", size(medsmall))
	ysca(titlegap(2))
	ylab(-.2(.1).2 0 "0", nogrid angle(0) format(%4.2f))
	yline(0, lcolor(ltbluishgray))
	xtitle("E( Predicted change in cardiovascular disease mortality 1960-2000 | X )", size(medsmall))
	xlab(-.08(.04).08 0 "0", nogrid angle(0) format(%4.2f))
	xsca(titlegap(2))
	lcolor(cranberry) mlab(state_code) mlabs(small)
	rlopts(lcolor(cranberry))
	text(-.10 .05 `"coef = `b', se = `se', t = `t'"', size(medsmall)) note("") ///
	graphregion(color(white)) bgcolor(white)
;

#delimit cr

restore


* Figure 3(c): First Stage 1950-1960

preserve

#delimit ;

keep if year == 1950 | year == 1960;
xtset id year, delta(10);

reg D.ln_life_exp_2060 D.mort_cvd_1950 D.lnincwage1564_1950 D.shcoll_1950 D.mort_other_1950 [aw=pop_1960] if year == 1960, cl(id);
	loc b : di %04.2f _b[D.mort_cvd_1950];
	di `b';
	loc se : di %04.2f _se[D.mort_cvd_1950];
	di `se';
	loc t : di %04.2f _b[D.mort_cvd_1950] / _se[D.mort_cvd_1950];
	di `t';

avplot D.(mort_cvd_1950),
	ytitle("E( Change in log life expectancy 1950-1960 | X )", size(medsmall))
	ysca(titlegap(2))
	ylab(-.06(.03).06 0 "0", nogrid angle(0) format(%4.2f))
	yline(0, lcolor(ltbluishgray))
	xtitle("E( Predicted change in cardiovascular disease mortality 1960-2000 | X )", size(medsmall))
	xlab(-.08(.04).08 0 "0", nogrid angle(0) format(%4.2f))
	xsca(titlegap(2))
	lcolor(cranberry) mlab(state_code) mlabs(small)
	rlopts(lcolor(cranberry))
	text(-.045 .05 `"coef = `b', se = `se', t = `t'"', size(medsmall)) note("")
	graphregion(color(white)) bgcolor(white)
;

#delimit cr

restore
	

* Figure 3(d): First Stage 1960-2000

preserve

#delimit ;

keep if year == 1960 | year == 2000;
xtset id year, delta(40);
	
reg D.ln_life_exp_2060 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960] if year == 2000, cl(id);
	loc b : di %04.2f _b[D.mort_cvd_2000];
	di `b';
	loc se : di %04.2f _se[D.mort_cvd_2000];
	di `se';
	loc t : di %04.2f _b[D.mort_cvd_2000] / _se[D.mort_cvd_2000];
	di `t';

avplot D.(mort_cvd_2000),
	ytitle("E( Change in log life expectancy 1960-2000 | X )", size(medsmall))
	ysca(titlegap(2))
	ylab(-.06(.03).06 0 "0", nogrid angle(0) format(%4.2f))
	yline(0, lcolor(ltbluishgray))
	xtitle("E( Predicted change in cardiovascular disease mortality 1960-2000 | X )", size(medsmall))
	xlab(-.08(.04).08 0 "0", nogrid angle(0) format(%4.2f))
	xsca(titlegap(2))
	lcolor(cranberry) mlab(state_code) mlabs(small)
	rlopts(lcolor(cranberry))
	text(-.045 .05 `"coef = `b', se = `se', t = `t'"', size(medsmall)) note("")
	graphregion(color(white)) bgcolor(white)
;

#delimit cr

restore


********************************************************************************
* Table 2: Effect of Adult Health on Income Per Person by Age Cohort


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)


* Table 2(a): Log wage income per person in age cohort

* Column 1: 15-24
ivreg2 D.lnincwage1524 ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_2a1
* Column 2: 25-34
ivreg2 D.lnincwage2534 ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_2a2
* Column 3: 35-44
ivreg2 D.lnincwage3544 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_2a3
* Column 4: 45-54
ivreg2 D.lnincwage4554 ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_2a4
* Column 5: 55-64
ivreg2 D.lnincwage5564 ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_2a5
* Column 6: 15-64
ivreg2 D.lnincwage1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_2a6
* Column 7: 65+
ivreg2 D.lnincwage65p ( D.ln_life_exp_65 = D.mort_cvd_2000 ) D.shcoll_2000 D.lnincwage1564_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_2a7
* Display results
esttab table_2a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


* Table 2(b): Log total income per person in age cohort

* Column 1: 15-24
ivreg2 D.lninctot1524 ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_2b1
* Column 2: 25-34
ivreg2 D.lninctot2534 ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_2b2
* Column 3: 35-44
ivreg2 D.lninctot3544 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_2b3
* Column 4: 45-54
ivreg2 D.lninctot4554 ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_2b4
* Column 5: 55-64
ivreg2 D.lninctot5564 ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_2b5
* Column 6: 15-64
ivreg2 D.lninctot1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_2b6
* Column 7: 65+
ivreg2 D.lninctot65p ( D.ln_life_exp_65 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_2b7
* Display results
esttab table_2b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


********************************************************************************
* Table 3: Results by Age Cohort for Naive Measurement of Health Dynamics


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)


* Table 3(a): Life expectancy measured at 40

* Column 1: 15-24
ivreg2 D.lnincwage1524 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_3a1
* Column 2: 25-34
ivreg2 D.lnincwage2534 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_3a2
* Column 3: 35-44
ivreg2 D.lnincwage3544 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_3a3
* Column 4: 45-54
ivreg2 D.lnincwage4554 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_3a4
* Column 5: 55-64
ivreg2 D.lnincwage5564 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_3a5
* Column 6: 15-64
ivreg2 D.lnincwage1564 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_3a6
* Column 7: 65+
ivreg2 D.lnincwage65p ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_3a7
* Display results
esttab table_3a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_40) scalars(widstat) obslast sfmt(a2) nonotes compress


* Table 3(b): Life expectancy measured at birth

* Column 1: 15-24
ivreg2 D.lnincwage1524 ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_3b1
* Column 2: 25-34
ivreg2 D.lnincwage2534 ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_3b2
* Column 3: 35-44
ivreg2 D.lnincwage3544 ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_3b3
* Column 4: 45-54
ivreg2 D.lnincwage4554 ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_3b4
* Column 5: 55-64
ivreg2 D.lnincwage5564 ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_3b5
* Column 6: 15-64
ivreg2 D.lnincwage1564 ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_3b6
* Column 7: 65+
ivreg2 D.lnincwage65p ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_3b7
* Display results
esttab table_3b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_birth) scalars(widstat) obslast sfmt(a2) nonotes compress


* Changes in life expectancy

mat L = J(1,8,.)
su ln_life_exp_birth if year == 1960
loc a = `r(mean)'
su ln_life_exp_birth if year == 2000
loc b = `r(mean)'
loc c: di %4.1f ( exp(`b' - `a') - 1 ) * 100
di "Percent change in life expectancy at birth: " `c'
mat L[1,1] = `c'
forvalues x = 20(10)60	{
	su ln_life_exp_`x' if year == 1960
	loc a = `r(mean)'
	su ln_life_exp_`x' if year == 2000
	loc b = `r(mean)'
	loc c: di %4.1f ( exp(`b' - `a') - 1 ) * 100
	di "Percent change in life expectancy at age `x': " `c'
	loc y = `x'/10
	mat L[1,`y'] = `c'
}
su ln_life_exp_2060 if year == 1960
loc a = `r(mean)'
su ln_life_exp_2060 if year == 2000
loc b = `r(mean)'
loc c: di %4.1f ( exp(`b' - `a') - 1 ) * 100
di "Percent change in adult life expectancy: " `c'
mat L[1,7] = `c'
su ln_life_exp_65 if year == 1960
loc a = `r(mean)'
su ln_life_exp_65 if year == 2000
loc b = `r(mean)'
loc c: di %4.1f ( exp(`b' - `a') - 1 ) * 100
di "Percent change in life expectancy at age 65: " `c'
mat L[1,8] = `c'
mat coln L = le_birth le_20 le_30 le_40 le_50 le_60 le_2060 le_65 
mat li L


********************************************************************************
* Table 4: Effect of Adult Health on Labor Supply by Age Cohort


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)


* Table 4(a): Labor force participation (estimates divided by 100)

preserve

replace lfpr1524 = lfpr1524 / 100
replace lfpr2534 = lfpr2534 / 100
replace lfpr3544 = lfpr3544 / 100
replace lfpr4554 = lfpr4554 / 100
replace lfpr5564 = lfpr5564 / 100
replace lfpr1564 = lfpr1564 / 100
replace lfpr65p = lfpr65p / 100

* Column 1: 15-24
ivreg2 D.lfpr1524 ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_4a1
* Column 2: 25-34
ivreg2 D.lfpr2534 ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_4a2
* Column 3: 35-44
ivreg2 D.lfpr3544 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_4a3
* Column 4: 45-54
ivreg2 D.lfpr4554 ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_4a4
* Column 5: 55-64
ivreg2 D.lfpr5564 ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_4a5
* Column 6: 15-64
ivreg2 D.lfpr1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_4a6
* Column 7: 65+
ivreg2 D.lfpr65p ( D.ln_life_exp_65 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_4a7
* Display results
esttab table_4a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress

restore


* Table 4(b): Usual hours worked per week (estimates divided by 100)

preserve

replace whours1524 = whours1524 / 100
replace whours2534 = whours2534 / 100
replace whours3544 = whours3544 / 100
replace whours4554 = whours4554 / 100
replace whours5564 = whours5564 / 100
replace whours1564 = whours1564 / 100
replace whours65p = whours65p / 100

* Column 1: 15-24
ivreg2 D.whours1524 ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_4b1
* Column 2: 25-34
ivreg2 D.whours2534 ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_4b2
* Column 3: 35-44
ivreg2 D.whours3544 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_4b3
* Column 4: 45-54
ivreg2 D.whours4554 ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_4b4
* Column 5: 55-64
ivreg2 D.whours5564 ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_4b5
* Column 6: 15-64
ivreg2 D.whours1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_4b6
* Column 7: 65+
ivreg2 D.whours65p ( D.ln_life_exp_65 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_4b7
* Display results
esttab table_4b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress

restore


* Table 4(c): Usual weeks worked per year (estimates divided by 100)

preserve

replace wweeks1524 = wweeks1524 / 100
replace wweeks2534 = wweeks2534 / 100
replace wweeks3544 = wweeks3544 / 100
replace wweeks4554 = wweeks4554 / 100
replace wweeks5564 = wweeks5564 / 100
replace wweeks1564 = wweeks1564 / 100
replace wweeks65p = wweeks65p / 100

* Column 1: 15-24
ivreg2 D.wweeks1524 ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_4c1
* Column 2: 25-34
ivreg2 D.wweeks2534 ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_4c2
* Column 3: 35-44
ivreg2 D.wweeks3544 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_4c3
* Column 4: 45-54
ivreg2 D.wweeks4554 ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_4c4
* Column 5: 55-64
ivreg2 D.wweeks5564 ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_4c5
* Column 6: 15-64
ivreg2 D.wweeks1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_4c6
* Column 7: 65+
ivreg2 D.wweeks65p ( D.ln_life_exp_65 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_4c7
* Display results
esttab table_4c*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress

restore


* Footnote 14: Unreported regressions (estimates divided by 100)

preserve

replace whours15p = whours15p / 100
replace wweeks15p = wweeks15p / 100
* Usual hours worked per week, all age groups
ivreg2 D.whours15p ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto footnote_141
* Usual weeks worked per year, all age groups
ivreg2 D.wweeks15p ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto footnote_142
* Dislay results
esttab footnote_14*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_2060) scalars(widstat) obslast sfmt(a1) nonotes compress
* Sample means in 1960
su whours15p wweeks15p if year == 1960, f

restore


********************************************************************************
* Table 5: Effect of Adult Health on College Graduation by Age Cohort (estimates divided by 100)


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)

preserve

replace collgrad1524 = collgrad1524 / 100
replace collgrad2534 = collgrad2534 / 100
replace collgrad3544 = collgrad3544 / 100
replace collgrad4554 = collgrad4554 / 100
replace collgrad5564 = collgrad5564 / 100
replace collgrad1564 = collgrad1564 / 100
replace collgrad65p = collgrad65p / 100

* Column 1: 15-24
ivreg2 D.collgrad1524 ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_51
* Column 2: 25-34
ivreg2 D.collgrad2534 ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_52
* Column 3: 35-44
ivreg2 D.collgrad3544 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_53
* Column 4: 45-54
ivreg2 D.collgrad4554 ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_54
* Column 5: 55-64
ivreg2 D.collgrad5564 ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_55
* Column 6: 15-64
ivreg2 D.collgrad1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_56
* Column 7: 65+
ivreg2 D.collgrad65p ( D.ln_life_exp_65 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_57
* Display results
esttab table_5*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress

restore


********************************************************************************
* Table 6: Effect of Individual Health on Income

/*
Table 6 reports estimates that are obtained from the geo-coded Health and
Retirement Survey, which is not accessible to the public. Here I provide only
the code that was used to generate the results in Table 6.

* Data preparation

use "...\hrsxstate14.dta", clear
ren ( hhid pn ) ( hhidstr pnstr )
egen hhidpnstr = concat( hhidstr pnstr )
destring hhidpnstr, g( hhidpn )

merge 1:1 hhidpn using "...\rndhrs_p.dta"
drop if _merge != 3
drop hhidstr pnstr hhidpnstr _merge
order hhidpn, first

destring STFIPS92, g( stfips1 )
destring STFIPS94, g( stfips2 )
destring STFIPS96, g( stfips3 )
destring STFIPS98, g( stfips4 )
destring STFIPS00, g( stfips5 )
destring STFIPS02, g( stfips6 )
destring STFIPS04, g( stfips7 )
destring STFIPS06, g( stfips8 )
destring STFIPS08, g( stfips9 )
destring STFIPS10, g( stfips10 )
destring STFIPS12, g( stfips11 )
destring STFIPS14, g( stfips12 )

destring STFIPS93, g( stfips2_star ) 
destring STFIPS95, g( stfips3_star ) 

replace stfips2 = stfips2_star if missing(stfips2) & !missing(stfips2_star)
replace stfips3 = stfips3_star if missing(stfips3) & !missing(stfips3_star)
assert !missing(stfips2) if !missing(stfips2_star)
assert !missing(stfips3) if !missing(stfips3_star)
drop stfips2_star stfips3_star

keep hhidpn inw* *hearte *stroke *hibpe *agey_m ragender raedyrs raedegrm *cenreg *iearn *atota rabyear *lbrf *jcten *fsize *retemp rabplace raracem hacohort stfips*
reshape long inw@ r@hearte r@stroke r@hibpe r@agey_m r@cenreg stfips@ 	r@iearn h@atota r@lbrf r@jcten r@fsize r@retemp r@inlbrf, i(hhidpn) j(wave)
	
* Inflation-adjustment
replace riearn = riearn * 1.601 if wave == 1
replace riearn = riearn * 1.509 if wave == 2 & hacohort == 3
replace riearn = riearn * 1.431 if wave == 3 & hacohort == 3
replace riearn = riearn * 1.554 if wave == 2 & hacohort == 0 | wave == 2 & hacohort == 1
replace riearn = riearn * 1.471 if wave == 3 & hacohort == 0 | wave == 3 & hacohort == 1
replace riearn = riearn * 1.359 if wave == 4
replace riearn = riearn * 1.309 if wave == 5
replace riearn = riearn * 1.231 if wave == 6
replace riearn = riearn * 1.185 if wave == 7
replace riearn = riearn * 1.117 if wave == 8
replace riearn = riearn * 1.052 if wave == 9
replace riearn = riearn * 1.016 if wave == 10
replace riearn = riearn * 0.969 if wave == 11
replace riearn = riearn * 0.936 if wave == 12

* Cohort-identifier
g rabyear_1910 =.
replace rabyear_1910 = 0 if !missing(rabyear)
replace rabyear_1910 = 1 if rabyear <= 1910
ta rabyear_1910
g rabyear_1920 =.
replace rabyear_1920 = 0 if !missing(rabyear)
replace rabyear_1920 = 1 if rabyear <= 1920
g rabyear_1930 =.
replace rabyear_1930 = 0 if !missing(rabyear)
replace rabyear_1930 = 1 if rabyear <= 1930
g rabyear_1940 =.
replace rabyear_1940 = 0 if !missing(rabyear)
replace rabyear_1940 = 1 if rabyear <= 1940
g rabyear_1950 =.
replace rabyear_1950 = 0 if !missing(rabyear)
replace rabyear_1950 = 1 if rabyear <= 1950
g rabyear_1910_1930 =.
replace rabyear_1910_1930 = 0 if !missing(rabyear)
replace rabyear_1910_1930 = 1 if rabyear > 1910 & rabyear <= 1930

g born_1910 =.
replace born_1910 = 0 if !missing(rabyear)
replace born_1910 = 1 if rabyear <= 1910
g born_1910_1920 =.
replace born_1910_1920 = 0 if !missing(rabyear)
replace born_1910_1920 = 1 if rabyear > 1910 & rabyear <= 1920
g born_1920_1930 =.
replace born_1920_1930 = 0 if !missing(rabyear)
replace born_1920_1930 = 1 if rabyear > 1920 & rabyear <= 1930
g born_1930_1940 =.
replace born_1930_1940 = 0 if !missing(rabyear)
replace born_1930_1940 = 1 if rabyear > 1930 & rabyear <= 1940
g born_1940_1950 =.
replace born_1940_1950 = 0 if !missing(rabyear)
replace born_1940_1950 = 1 if rabyear > 1940 & rabyear <= 1950
g born_1950 =.
replace born_1950 = 0 if !missing(rabyear)
replace born_1950 = 1 if rabyear > 1950

g ln_income = .
replace ln_income = ln( riearn ) if riearn > 0
la var ln_income "Log income earnings"

replace stfips =. if stfips == 72

egen pid = group(hhidpn)
egen wid = group(wave)
xtset pid wid


* Table 6: Effect of Individual Health on Income

* Column 1: Without interaction
xtreg ln_income i.rhearte i.rcenreg##i.wave c.ragey_m##c.ragey_m##c.ragey_m##c.ragey_m i.stfips, fe r
	qui ta rhearte if rhearte == 1 & e(sample) == 1
	estadd loc N_hc "`r(N)'"
	estadd loc N_b1910 "---"
	est sto table_61
* Column 2: Interaction with cohort dummy for 1910
xtreg ln_income i.rhearte##i.rabyear_1910 i.rcenreg##i.wave c.ragey_m##c.ragey_m##c.ragey_m##c.ragey_m i.stfips, fe r
	qui ta rhearte if rhearte == 1 & e(sample) == 1
	estadd loc N_hc "`r(N)'"
	qui ta rabyear_1910 if rabyear_1910 == 1 & e(sample) == 1
	estadd loc N_b1910 "`r(N)'"
	est sto table_62
* Column 3: Interaction with cohort dummy for 1920
xtreg ln_income i.rhearte##i.rabyear_1920 i.rcenreg##i.wave c.ragey_m##c.ragey_m##c.ragey_m##c.ragey_m i.stfips, fe r
	qui ta rhearte if rhearte == 1 & e(sample) == 1
	estadd loc N_hc "`r(N)'"
	qui ta rabyear_1920 if rabyear_1920 == 1 & e(sample) == 1
	estadd loc N_b1910 "`r(N)'"
	est sto table_63
* Column 4: Interaction with cohort dummy for 1930
xtreg ln_income i.rhearte##i.rabyear_1930 i.rcenreg##i.wave c.ragey_m##c.ragey_m##c.ragey_m##c.ragey_m i.stfips, fe r
	qui ta rhearte if rhearte == 1 & e(sample) == 1
	estadd loc N_hc "`r(N)'"
	qui ta rabyear_1930 if rabyear_1930 == 1 & e(sample) == 1
	estadd loc N_b1910 "`r(N)'"
	est sto table_64
* Column 5: Interaction with cohort dummy for 1940	
xtreg ln_income i.rhearte##i.rabyear_1940 i.rcenreg##i.wave c.ragey_m##c.ragey_m##c.ragey_m##c.ragey_m i.stfips, fe r
	qui ta rhearte if rhearte == 1 & e(sample) == 1
	estadd loc N_hc "`r(N)'"
	qui ta rabyear_1940 if rabyear_1940 == 1 & e(sample) == 1
	estadd loc N_b1910 "`r(N)'"
	est sto table_65
* Column 6: Interaction with cohort dummy for 1950
xtreg ln_income i.rhearte##i.rabyear_1950 i.rcenreg##i.wave c.ragey_m##c.ragey_m##c.ragey_m##c.ragey_m i.stfips, fe r
	qui ta rhearte if rhearte == 1 & e(sample) == 1
	estadd loc N_hc "`r(N)'"
	qui ta rabyear_1950 if rabyear_1950 == 1 & e(sample) == 1
	estadd loc N_b1910 "`r(N)'"
	est sto table_66
* Display results
esttab table_6*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(1.rhearte 1.rhearte#1.rabyear_*) obslast nonotes scalars("N_hc" "N_b1910" N_g) sfmt(a1) compress
*/


********************************************************************************
* Figure A2: Geographic Dispersion of Life Expectancy at Age 30 in 1960


use "us_state_panel_1950_2000.dta", clear
keep if year == 1960
sort state
egen mid = group(state)
save "us_state_map_1960.dta", replace

shp2dta using "us_states", database("us_map_db.dta") ///
	coordinates("us_map_coord.dta") genid(mid) replace

use "us_map_db.dta", clear
sort STATENAM
egen id = group(STATENAM)
keep id mid STATENAM
ren STATENAM state_name
merge 1:1 id using "us_state_map_1960.dta", nogen
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
form mortality_cvd_1960 %5.3f
	
spmap life_exp_30 using "us_map_coord.dta", ///
	id(mid) fcolor(Blues2) lego(lohi) legtitle("Life Expectancy at 30")


********************************************************************************
* Figure A3: Partial Correlations Before and After the Beginning of the Cardiovascular Revolution


use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"


* Figure A3(a): Reduced Form 1950-1960

preserve

#delimit ;

keep if year == 1950 | year == 1960;
xtset id year, delta(10);

reg D.lninctot1564 D.mort_cvd_1950 D.lninctot1564_1950 D.shcoll_1950 D.mort_other_1950 [aw=pop_1960] if year == 1960, cl(id);
	loc b : di %04.2f _b[D.mort_cvd_1950];
	di `b';
	loc se : di %04.2f _se[D.mort_cvd_1950];
	di `se';
	loc t : di %04.2f _b[D.mort_cvd_1950] / _se[D.mort_cvd_1950];
	di `t';

avplot D.(mort_cvd_1950),
	ytitle("E( Change in log wages 1950-1960 | X )", size(medsmall))
	ysca(titlegap(2))
	ylab(-.2(.1).2 0 "0", nogrid angle(0) format(%4.2f))
	yline(0, lcolor(ltbluishgray))
	xtitle("E( Predicted change in cardiovascular disease mortality 1960-2000 | X )", size(medsmall))
	xlab(-.08(.04).08 0 "0", nogrid angle(0) format(%4.2f))
	xsca(titlegap(2))
	lcolor(cranberry) mlab(state_code) mlabs(small)
	rlopts(lcolor(cranberry))
	text(-.15 .05 `"coef = `b', se = `se', t = `t'"', size(medsmall)) note("")
	graphregion(color(white)) bgcolor(white)
;

#delimit cr	
	
restore


* Figure A3(b): Reduced Form 1960-2000

preserve

#delimit ;

keep if year == 1960 | year == 2000;
xtset id year, delta(40);

reg D.lninctot1564 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960] if year == 2000, cl(id);
	loc b : di %04.2f _b[D.mort_cvd_2000];
	di `b';
	loc se : di %04.2f _se[D.mort_cvd_2000];
	di `se';
	loc t : di %04.2f _b[D.mort_cvd_2000] / _se[D.mort_cvd_2000];
	di `t';

avplot D.(mort_cvd_2000),
	ytitle("E( Change in log wages 1960-2000 | X )", size(medsmall))
	ysca(titlegap(2))
	ylab(-.2(.1).2 0 "0", nogrid angle(0) format(%4.2f))
	yline(0, lcolor(ltbluishgray))
	xtitle("E( Predicted change in cardiovascular disease mortality 1960-2000 | X )", size(medsmall))
	xlab(-.08(.04).08 0 "0", nogrid angle(0) format(%4.2f))
	xsca(titlegap(2))
	lcolor(cranberry) mlab(state_code) mlabs(small)
	rlopts(lcolor(cranberry))
	text(-.10 .05 `"coef = `b', se = `se', t = `t'"', size(medsmall)) note("") ///
	graphregion(color(white)) bgcolor(white)
;

#delimit cr

restore


* Figure A3(c): First Stage 1950-1960

preserve

#delimit ;

keep if year == 1950 | year == 1960;
xtset id year, delta(10);

reg D.ln_life_exp_2060 D.mort_cvd_1950 D.lninctot1564_1950 D.shcoll_1950 D.mort_other_1950 [aw=pop_1960] if year == 1960, cl(id);
	loc b : di %04.2f _b[D.mort_cvd_1950];
	di `b';
	loc se : di %04.2f _se[D.mort_cvd_1950];
	di `se';
	loc t : di %04.2f _b[D.mort_cvd_1950] / _se[D.mort_cvd_1950];
	di `t';

avplot D.(mort_cvd_1950),
	ytitle("E( Change in log life expectancy 1950-1960 | X )", size(medsmall))
	ysca(titlegap(2))
	ylab(-.06(.03).06 0 "0", nogrid angle(0) format(%4.2f))
	yline(0, lcolor(ltbluishgray))
	xtitle("E( Predicted change in cardiovascular disease mortality 1960-2000 | X )", size(medsmall))
	xlab(-.08(.04).08 0 "0", nogrid angle(0) format(%4.2f))
	xsca(titlegap(2))
	lcolor(cranberry) mlab(state_code) mlabs(small)
	rlopts(lcolor(cranberry))
	text(-.045 .05 `"coef = `b', se = `se', t = `t'"', size(medsmall)) note("")
	graphregion(color(white)) bgcolor(white)
;

#delimit cr

restore
	

* Figure A3(d): First Stage 1960-2000

preserve

#delimit ;

keep if year == 1960 | year == 2000;
xtset id year, delta(40);
	
reg D.ln_life_exp_2060 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960] if year == 2000, cl(id);
	loc b : di %04.2f _b[D.mort_cvd_2000];
	di `b';
	loc se : di %04.2f _se[D.mort_cvd_2000];
	di `se';
	loc t : di %04.2f _b[D.mort_cvd_2000] / _se[D.mort_cvd_2000];
	di `t';

avplot D.(mort_cvd_2000),
	ytitle("E( Change in log life expectancy 1960-2000 | X )", size(medsmall))
	ysca(titlegap(2))
	ylab(-.06(.03).06 0 "0", nogrid angle(0) format(%4.2f))
	yline(0, lcolor(ltbluishgray))
	xtitle("E( Predicted change in cardiovascular disease mortality 1960-2000 | X )", size(medsmall))
	xlab(-.08(.04).08 0 "0", nogrid angle(0) format(%4.2f))
	xsca(titlegap(2))
	lcolor(cranberry) mlab(state_code) mlabs(small)
	rlopts(lcolor(cranberry))
	text(-.045 .05 `"coef = `b', se = `se', t = `t'"', size(medsmall)) note("")
	graphregion(color(white)) bgcolor(white)
;

#delimit cr

restore


********************************************************************************
* Table A1: Descriptive Statistics


use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000

* Adult health and mortality
su life_exp_2060 life_exp_20 life_exp_30 life_exp_40 life_exp_50 life_exp_60 life_exp_65 if year == 1960, f
su life_exp_2060 life_exp_20 life_exp_30 life_exp_40 life_exp_50 life_exp_60 life_exp_65 if year == 2000, f 
su ln_life_exp_2060 ln_life_exp_20 ln_life_exp_30 ln_life_exp_40 ln_life_exp_50 ln_life_exp_60 ln_life_exp_65 if year == 1960, f
su ln_life_exp_2060 ln_life_exp_20 ln_life_exp_30 ln_life_exp_40 ln_life_exp_50 ln_life_exp_60 ln_life_exp_65 if year == 2000, f
su mortality_cvd_1960 if year == 1960, f
su mortality_cvd_2000 if year == 2000, f
su mortality_noncvd_1960 if year == 1960, f
su mortality_noncvd_2000 if year == 2000, f

* Aggregate Income
su lnincwage1564 lnincwage1524 lnincwage2534 lnincwage3544 lnincwage4554 lnincwage5564 lnincwage65p if year == 1960, f
su lnincwage1564 lnincwage1524 lnincwage2534 lnincwage3544 lnincwage4554 lnincwage5564 lnincwage65p if year == 2000, f
su lninctot1564 lninctot1524 lninctot2534 lninctot3544 lninctot4554 lninctot5564 lninctot65p if year == 1960, f
su lninctot1564 lninctot1524 lninctot2534 lninctot3544 lninctot4554 lninctot5564 lninctot65p if year == 2000, f
su lnrgdpw if year == 1960, f
su lnrgdpw if year == 2000, f

* Labor supply and education
su lfpr1564 lfpr1524 lfpr2534 lfpr3544 lfpr4554 lfpr5564 lfpr65p if year == 1960, f
su lfpr1564 lfpr1524 lfpr2534 lfpr3544 lfpr4554 lfpr5564 lfpr65p if year == 2000, f
su whours1564 whours1524 whours2534 whours3544 whours4554 whours5564 whours65p if year == 1960, f
su whours1564 whours1524 whours2534 whours3544 whours4554 whours5564 whours65p if year == 2000, f
su wweeks1564 wweeks1524 wweeks2534 wweeks3544 wweeks4554 wweeks5564 wweeks65p if year == 1960, f
su wweeks1564 wweeks1524 wweeks2534 wweeks3544 wweeks4554 wweeks5564 wweeks65p if year == 2000, f
su collgrad1564 collgrad1524 collgrad2534 collgrad3544 collgrad4554 collgrad5564 collgrad65p if year == 1960, f
su collgrad1564 collgrad1524 collgrad2534 collgrad3544 collgrad4554 collgrad5564 collgrad65p if year == 2000, f


********************************************************************************
* Table A2: Ordinary Least Squares: Adult Health and Income Per Person


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)

* Column 1: Wage income per person 15-64, no controls
reg D.lnincwage1564 D.ln_life_exp_2060 [aw=pop_1960], cl(id)
est sto table_a21
* Column 2: Wage income per person 15-64, controls for income and education
reg D.lnincwage1564 D.ln_life_exp_2060 D.lnincwage1564_2000 D.shcoll_2000 [aw=pop_1960], cl(id)
est sto table_a22
* Column 3: Wage income per person 15-64, full controls
reg D.lnincwage1564 D.ln_life_exp_2060 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a23
* Column 4: Total income per person 15-64, no controls
reg D.lninctot1564 D.ln_life_exp_2060 [aw=pop_1960], cl(id)
est sto table_a24
* Column 5: Total income per person 15-64, controls for income and education
ivreg2 D.lninctot1564 D.ln_life_exp_2060 D.lninctot1564_2000 D.shcoll_2000 [aw=pop_1960], cl(id)
est sto table_a25
* Column 6: Total income per person 15-64, full controls
ivreg2 D.lninctot1564 D.ln_life_exp_2060 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a26
* Display results
esttab table_a2*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_2060) obslast nonotes compress


********************************************************************************
* Table A3: Reduced Form and First Stage by Age Cohort


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)


* Table A3(a): Reduced form: log wage income per person in age cohort

* Column 1: 15-24
reg D.lnincwage1524 D.mort_cvd_2000 D.lnincwage1564_2000  D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_a3a1
* Column 2: 25-34
reg D.lnincwage2534 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_a3a2
* Column 3: 35-44
reg D.lnincwage3544 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_a3a3
* Column 4: 45-54
reg D.lnincwage4554 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_a3a4
* Column 5: 55-64
reg D.lnincwage5564 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_a3a5
* Column 6: 15-64
reg D.lnincwage1564 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a3a6
* Column 7: 65+
reg D.lnincwage65p D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_a3a7
* Display results
esttab table_a3a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.mort_cvd_2000) obslast nonotes compress


* Table A3(b): Reduced form: log total income per person in age cohort

* Column 1: 15-24
reg D.lninctot1524 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_a3b1
* Column 2: 25-34
reg D.lninctot2534 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_a3b2
* Column 3: 35-44
reg D.lninctot3544 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_a3b3
* Column 4: 45-54
reg D.lninctot4554 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_a3b4
* Column 5: 55-64
reg D.lninctot5564 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_a3b5
* Column 6: 15-64
reg D.lninctot1564 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a3b6
* Column 7: 65+
reg D.lninctot65p D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_a3b7
* Display results
esttab table_a3b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.mort_cvd_2000) obslast nonotes compress
	
	
* Table A3(c): First stage: log wage income per person in age cohort
	
* Column 1: 15-24
reg D.ln_life_exp_20 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_a3c1
* Column 2: 25-34
reg D.ln_life_exp_30 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_a3c2
* Column 3: 35-44
reg D.ln_life_exp_40 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_a3c3
* Column 4: 45-54
reg D.ln_life_exp_50 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_a3c4
* Column 5: 55-64
reg D.ln_life_exp_60 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_a3c5
* Column 6: 15-64
reg D.ln_life_exp_2060 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a3c6
* Column 7: 65+
reg D.ln_life_exp_65 D.mort_cvd_2000 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_a3c7
* Display results
esttab table_a3c*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.mort_cvd_2000) obslast nonotes compress
	

* Table A3(d): First stage: log total income per person in age cohort

* Column 1: 15-24
reg D.ln_life_exp_20 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_a3d1
* Column 2: 25-34
reg D.ln_life_exp_30 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_a3d2
* Column 3: 35-44
reg D.ln_life_exp_40 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_a3d3
* Column 4: 45-54
reg D.ln_life_exp_50 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_a3d4
* Column 5: 55-64
reg D.ln_life_exp_60 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_a3d5
* Column 6: 15-64
reg D.ln_life_exp_2060 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a3d6
* Column 7: 65+
reg D.ln_life_exp_65 D.mort_cvd_2000 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_a3d7
* Display results
esttab table_a3d*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.mort_cvd_2000) obslast nonotes compress


********************************************************************************
* Table A4: Ordinary Least Squares: Adult Health and Income Per Person by Age Cohort


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)


* Table A4(a): Log wage income per person in age cohort

* Column 1: 15-24
reg D.lnincwage1524 D.ln_life_exp_20 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_a4a1
* Column 2: 25-34
reg D.lnincwage2534 D.ln_life_exp_30 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_a4a2
* Column 3: 35-44
reg D.lnincwage3544 D.ln_life_exp_40 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_a4a3
* Column 4: 45-54
reg D.lnincwage4554 D.ln_life_exp_50 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_a4a4
* Column 5: 55-64
reg D.lnincwage5564 D.ln_life_exp_60 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_a4a5
* Column 6: 15-64
reg D.lnincwage1564 D.ln_life_exp_2060 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a4a6
* Column 7: 65+
reg D.lnincwage65p D.ln_life_exp_65 D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_a4a7
* Display results
esttab table_a4a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) obslast nonotes compress


* Table A4(b): Log total income per person in age cohort

* Column 1: 15-24
reg D.lninctot1524 D.ln_life_exp_20 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_a4b1
* Column 2: 25-34
reg D.lninctot2534 D.ln_life_exp_30 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_a4b2
* Column 3: 35-44
reg D.lninctot3544 D.ln_life_exp_40 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_a4b3
* Column 4: 45-54
reg D.lninctot4554 D.ln_life_exp_50 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_a4b4
* Column 5: 55-64
reg D.lninctot5564 D.ln_life_exp_60 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_a4b5
* Column 6: 15-64
reg D.lninctot1564 D.ln_life_exp_2060 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a4b6
* Column 7: 65+	
reg D.lninctot65p D.ln_life_exp_65 D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_a4b7
* Display results
esttab table_a4b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) obslast nonotes compress


********************************************************************************
* Table A5: Results by Age Cohort for Naive Measurement of Health Dynamics


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)


* Table A5(a): Life expectancy measured at age 40

* Column 1: 15-24
ivreg2 D.lninctot1524 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_a5a1
* Column 2: 25-34
ivreg2 D.lninctot2534 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_a5a2
* Column 3: 35-44
ivreg2 D.lninctot3544 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_a5a3
* Column 4: 45-54
ivreg2 D.lninctot4554 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_a5a4
* Column 5: 55-64
ivreg2 D.lninctot5564 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_a5a5
* Column 6: 15-64
ivreg2 D.lninctot1564 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a5a6
* Column 7: 65+
ivreg2 D.lninctot65p ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_a5a7
* Display results
esttab table_a5a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_40) scalars(widstat) obslast sfmt(a2) nonotes compress


* Table A5(b): Life expectancy measured at birth

* Column 1: 15-24
ivreg2 D.lninctot1524 ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_a5b1
* Column 2: 25-34
ivreg2 D.lninctot2534 ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_a5b2
* Column 3: 35-44
ivreg2 D.lninctot3544 ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_a5b3
* Column 4: 45-54
ivreg2 D.lninctot4554 ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_a5b4
* Column 5: 55-64
ivreg2 D.lninctot5564 ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_a5b5
* Column 6: 15-64
ivreg2 D.lninctot1564 ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a5b6
* Column 7: 65+
ivreg2 D.lninctot65p ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_a5b7
* Display results
esttab table_a5b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_birth) scalars(widstat) obslast sfmt(a2) nonotes compress


* Changes in life expectancy

mat L = J(1,8,.)
su ln_life_exp_birth if year == 1960
loc a = `r(mean)'
su ln_life_exp_birth if year == 2000
loc b = `r(mean)'
loc c: di %4.1f ( exp(`b' - `a') - 1 ) * 100
di "Percent change in life expectancy at birth: " `c'
mat L[1,1] = `c'
forvalues x = 20(10)60	{
	su ln_life_exp_`x' if year == 1960
	loc a = `r(mean)'
	su ln_life_exp_`x' if year == 2000
	loc b = `r(mean)'
	loc c: di %4.1f ( exp(`b' - `a') - 1 ) * 100
	di "Percent change in life expectancy at age `x': " `c'
	loc y = `x'/10
	mat L[1,`y'] = `c'
}
su ln_life_exp_2060 if year == 1960
loc a = `r(mean)'
su ln_life_exp_2060 if year == 2000
loc b = `r(mean)'
loc c: di %4.1f ( exp(`b' - `a') - 1 ) * 100
di "Percent change in adult life expectancy: " `c'
mat L[1,7] = `c'
su ln_life_exp_65 if year == 1960
loc a = `r(mean)'
su ln_life_exp_65 if year == 2000
loc b = `r(mean)'
loc c: di %4.1f ( exp(`b' - `a') - 1 ) * 100
di "Percent change in life expectancy at age 65: " `c'
mat L[1,8] = `c'
mat coln L = le_birth le_20 le_30 le_40 le_50 le_60 le_2060 le_65 
mat li L


********************************************************************************
* Table A6: Robustness: Health and Income Per Person for Life Expectancy at Different Ages


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)


* Table A6(a): Log wage income per person aged 15-64

* Column 1: Life expectancy at birth
ivreg2 D.lnincwage1564 ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6a1
* Column 2: Life expectancy at 20
ivreg2 D.lnincwage1564 ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6a2
* Column 3: Life expectancy at 30
ivreg2 D.lnincwage1564 ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6a3
* Column 4: Life expectancy at 40
ivreg2 D.lnincwage1564 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6a4
* Column 5: Life expectancy at 50
ivreg2 D.lnincwage1564 ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6a5
* Column 6: Life expectancy at 60
ivreg2 D.lnincwage1564 ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6a6
* Column 7: Life expectancy mean 20-60
ivreg2 D.lnincwage1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6a7
* Column 8: Life expectancy mean 30-40
ivreg2 D.lnincwage1564 ( D.ln_life_exp_3040 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6a8
* Display results
esttab table_a6a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


* Table A6(b): Log total income per person aged 15-64

* Column 1: Life expectancy at birth
ivreg2 D.lninctot1564 ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6b1
* Column 2: Life expectancy at 20
ivreg2 D.lninctot1564 ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6b2
* Column 3: Life expectancy at 30
ivreg2 D.lninctot1564 ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6b3
* Column 4: Life expectancy at 40
ivreg2 D.lninctot1564 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6b4
* Column 5: Life expectancy at 50
ivreg2 D.lninctot1564 ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6b5
* Column 6: Life expectancy at 60
ivreg2 D.lninctot1564 ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6b6
* Column 7: Life expectancy mean 20-60
ivreg2 D.lninctot1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6b7
* Column 8: Life expectancy mean 30-40
ivreg2 D.lninctot1564 ( D.ln_life_exp_3040 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a6b8
* Display results
esttab table_a6b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


********************************************************************************
* Table A7: Robustness: Health Improvements During Working Ages and Income Per Person


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)


* Table A7(a): Log wage income per person in age cohort

* Column 1: 15-24
ivreg2 D.lnincwage1524 ( deltalnlifeexp20wa = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_a7a1
* Column 2: 25-34
ivreg2 D.lnincwage2534 ( deltalnlifeexp30wa = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_a7a2
* Column 3: 35-44
ivreg2 D.lnincwage3544 ( deltalnlifeexp40wa = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_a7a3
* Column 4: 45-54
ivreg2 D.lnincwage4554 ( deltalnlifeexp50wa = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_a7a4
* Column 5: 55-64
ivreg2 D.lnincwage5564 ( deltalnlifeexp60wa = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_a7a5
* Column 6: 15-64
ivreg2 D.lnincwage1564 ( deltalnlifeexp2060wa = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a7a6
* Display results
esttab table_a7a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(deltalnlifeexp*) scalars(widstat) obslast sfmt(a1) nonotes compress


* Table A7(b): Log total income per person in age cohort

* Column 1: 15-24
ivreg2 D.lninctot1524 ( deltalnlifeexp20wa = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_a7b1
* Column 2: 25-34
ivreg2 D.lninctot2534 ( deltalnlifeexp30wa = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_a7b2
* Column 3: 35-44
ivreg2 D.lninctot3544 ( deltalnlifeexp40wa = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_a7b3
* Column 4: 45-54
ivreg2 D.lninctot4554 ( deltalnlifeexp50wa = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_a7b4
* Column 5: 55-64
ivreg2 D.lninctot5564 ( deltalnlifeexp60wa = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_a7b5
* Column 6: 15-64
ivreg2 D.lninctot1564 ( deltalnlifeexp2060wa = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a7b6
* Display results
esttab table_a7b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(deltalnlifeexp*) scalars(widstat) obslast sfmt(a1) nonotes compress


********************************************************************************
* Table A8: Robustness: Linear Specification of Life Expectancy


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)


* Table A8(a): Log wage income per person in age cohort

* Column 1: 15-24
ivreg2 D.lnincwage1524 ( D.life_exp_20 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_a8a1
* Column 2: 25-34
ivreg2 D.lnincwage2534 ( D.life_exp_30 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_a8a2
* Column 3: 35-44
ivreg2 D.lnincwage3544 ( D.life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_a8a3
* Column 4: 45-54
ivreg2 D.lnincwage4554 ( D.life_exp_50 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_a8a4
* Column 5: 55-64
ivreg2 D.lnincwage5564 ( D.life_exp_60 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_a8a5
* Column 6: 15-64
ivreg2 D.lnincwage1564 ( D.life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a8a6
* Column 7: 65+
ivreg2 D.lnincwage65p ( D.life_exp_65 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_a8a7
* Display results
esttab table_a8a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


* Table A8(b): Log total income per person in age cohort

* Column 1: 15-24
ivreg2 D.lninctot1524 ( D.life_exp_20 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop1524_1960], cl(id)
est sto table_a8b1
* Column 2: 25-34
ivreg2 D.lninctot2534 ( D.life_exp_30 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop2534_1960], cl(id)
est sto table_a8b2
* Column 3: 35-44
ivreg2 D.lninctot3544 ( D.life_exp_40 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop3544_1960], cl(id)
est sto table_a8b3
* Column 4: 45-54
ivreg2 D.lninctot4554 ( D.life_exp_50 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop4554_1960], cl(id)
est sto table_a8b4
* Column 5: 55-64
ivreg2 D.lninctot5564 ( D.life_exp_60 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop5564_1960], cl(id)
est sto table_a8b5
* Column 6: 15-64
ivreg2 D.lninctot1564 ( D.life_exp_2060 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a8b6
* Column 7: 65+	
ivreg2 D.lninctot65p ( D.life_exp_65 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop65p_1960], cl(id)
est sto table_a8b7
* Display results
esttab table_a8b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


********************************************************************************
* Table A9: Robustness: Effect of Adult Health on Real Output Per Worker


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)

* Column 1: Life expectancy at birth
ivreg2 D.lnrgdpw ( D.(ln_life_exp_birth) = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a91
* Column 2: Life expectancy at 20
ivreg2 D.lnrgdpw ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a92
* Column 3: Life expectancy at 30
ivreg2 D.lnrgdpw ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a93
* Column 4: Life expectancy at 40
ivreg2 D.lnrgdpw ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a94
* Column 5: Life expectancy at 50
ivreg2 D.lnrgdpw ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a95
* Column 6: Life expectancy at 60
ivreg2 D.lnrgdpw ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a96
* Column 7: Life expectancy mean 20-60
ivreg2 D.lnrgdpw ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a97
* Column 8: Life expectancy mean 30-40
ivreg2 D.lnrgdpw ( D.ln_life_exp_3040 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=pop_1960], cl(id)
est sto table_a98
* Display results
esttab table_a9*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


********************************************************************************
* Table A10: Robustness: Unweighted Estimates


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)


* Table A10(a): Log wage income per person in age cohort

* Column 1: 15-24
ivreg2 D.lnincwage1524 ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000, cl(id)
est sto table_a10a1
* Column 2: 25-34
ivreg2 D.lnincwage2534 ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000, cl(id)
est sto table_a10a2
* Column 3: 35-44
ivreg2 D.lnincwage3544 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000, cl(id)
est sto table_a10a3
* Column 4: 45-54
ivreg2 D.lnincwage4554 ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000, cl(id)
est sto table_a10a4
* Column 5: 55-64
ivreg2 D.lnincwage5564 ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000, cl(id)
est sto table_a10a5
* Column 6: 15-64
ivreg2 D.lnincwage1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000, cl(id)
est sto table_a10a6
* Column 7: 65+
ivreg2 D.lnincwage65p ( D.ln_life_exp_65 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000, cl(id)
est sto table_a10a7
* Display results
esttab table_a10a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


* Table A(10)b: Log total income per person in age cohort

* Column 1: 15-24
ivreg2 D.lninctot1524 ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000, cl(id)
est sto table_a10b1
* Column 2: 25-34
ivreg2 D.lninctot2534 ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000, cl(id)
est sto table_a10b2
* Column 3: 35-44
ivreg2 D.lninctot3544 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000, cl(id)
est sto table_a10b3
* Column 4: 45-54
ivreg2 D.lninctot4554 ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000, cl(id)
est sto table_a10b4
* Column 5: 55-64
ivreg2 D.lninctot5564 ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000, cl(id)
est sto table_a10b5
* Column 6: 15-64
ivreg2 D.lninctot1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000, cl(id)
est sto table_a10b6
* Column 7: 65+
ivreg2 D.lninctot65p ( D.ln_life_exp_65 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000, cl(id)
est sto table_a10b7
* Display results
esttab table_a10b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


********************************************************************************
* Table A11: Effect of Adult Health on Income Per Person: Panel 1950-2000


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
xtset id year, delta(10)


* Table A11(a): Second stage (2SLS)

* Column 1: Wage income per person 15-64, no controls
xtivreg2 lnincwage1564 ( ln_life_exp_2060 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11a1
* Column 2: Wage income per person 15-64, controls for income and education
xtivreg2 lnincwage1564 ( ln_life_exp_2060 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11a2
* Column 3: Wage income per person 15-64, full controls
xtivreg2 lnincwage1564 ( ln_life_exp_2060 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11a3
* Column 4: Total income per person 15-64, no controls
xtivreg2 lninctot1564 ( ln_life_exp_2060 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11a4
* Column 5: Total income per person 15-64, controls for income and education
xtivreg2 lninctot1564 ( ln_life_exp_2060 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11a5
* Column 6: Total income per person 15-64, full controls
xtivreg2 lninctot1564 ( ln_life_exp_2060 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11a6	
* Display results
esttab table_a11a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(ln_life_exp_2060) scalars(widstat) obslast sfmt(a1) nonotes compress


* Table A11(b): Second stage (LIML)

* Column 1: Wage income per person 15-64, no controls
xtivreg2 lnincwage1564 ( ln_life_exp_2060 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id) liml
est sto table_a11b1
* Column 2: Wage income per person 15-64, controls for income and education
xtivreg2 lnincwage1564 ( ln_life_exp_2060 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id) liml
est sto table_a11b2
* Column 3: Wage income per person 15-64, full controls
xtivreg2 lnincwage1564 ( ln_life_exp_2060 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id) liml
est sto table_a11b3
* Column 4: Total income per person 15-64, no controls
xtivreg2 lninctot1564 ( ln_life_exp_2060 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id) liml
est sto table_a11b4
* Column 5: Total income per person 15-64, controls for income and education
xtivreg2 lninctot1564 ( ln_life_exp_2060 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id) liml
est sto table_a11b5
* Column 6: Total income per person 15-64, full controls
xtivreg2 lninctot1564 ( ln_life_exp_2060 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id) liml
est sto table_a11b6	
* Display results
esttab table_a11b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(ln_life_exp_2060) scalars(widstat) obslast sfmt(a1) nonotes compress


* Table A11(c): Reduced Form

* Column 1: Wage income per person 15-64, no controls
xtreg lnincwage1564 mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11c1
* Column 2: Wage income per person 15-64, controls for income and education
xtreg lnincwage1564 mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11c2
* Column 3: Wage income per person 15-64, full controls
xtreg lnincwage1564 mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11c3
* Column 4: Total income per person 15-64, no controls
xtreg lninctot1564 mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11c4
* Column 5: Total income per person 15-64, controls for income and education
xtreg lninctot1564 mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11c5
* Column 6: Total income per person 15-64, full controls
xtreg lninctot1564 mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11c6
* Display results
esttab table_a11c*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000) obslast nonotes compress


* Table A11(d): First stage

* Column 1: Life expectancy, no controls
xtreg ln_life_exp_2060 mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11d1
* Column 2: Life expectancy, controls for income and education
xtreg ln_life_exp_2060 mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11d2
* Column 3: Life expectancy, full controls
xtreg ln_life_exp_2060 mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11d3
* Column 4: Life expectancy, no controls
xtreg ln_life_exp_2060 mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11d4
* Column 5: Life expectancy, controls for income and education
xtreg ln_life_exp_2060 mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11d5
* Column 6: Life expectancy, full controls
xtreg ln_life_exp_2060 mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a11d6
* Display results
esttab table_a11d*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000) obslast nonotes compress


********************************************************************************
* Table A12: Effect of Adult Health on Income Per Person by Age Cohort: Panel 1950-2000


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
xtset id year, delta(10)


* Table A12(a): Log wage income per person in age cohort

* Column 1: 15-24
xtivreg2 lnincwage1524 ( ln_life_exp_20 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop1524_1960], fe cl(id)
est sto table_a12a1
* Column 2: 25-34
xtivreg2 lnincwage2534 ( ln_life_exp_30 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop2534_1960], fe cl(id)
est sto table_a12a2
* Column 3: 35-44
xtivreg2 lnincwage3544 ( ln_life_exp_40 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop3544_1960], fe cl(id)
est sto table_a12a3
* Column 4: 45-54
xtivreg2 lnincwage4554 ( ln_life_exp_50 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop4554_1960], fe cl(id)
est sto table_a12a4
* Column 5: 55-64
xtivreg2 lnincwage5564 ( ln_life_exp_60 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop5564_1960], fe cl(id)
est sto table_a12a5
* Column 6: 15-64
xtivreg2 lnincwage1564 ( ln_life_exp_2060 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a12a6
* Column 7: 65+
xtivreg2 lnincwage65p ( ln_life_exp_65 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop65p_1960], fe cl(id)
est sto table_a12a7
* Display results
esttab table_a12a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


* Table A12(b): Log total income per person in age cohort

* Column 1: 15-24
xtivreg2 lninctot1524 ( ln_life_exp_20 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop1524_1960], fe cl(id)
est sto table_a12b1
* Column 2: 25-34
xtivreg2 lninctot2534 ( ln_life_exp_30 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop2534_1960], fe cl(id)
est sto table_a12b2
* Column 3: 35-44
xtivreg2 lninctot3544 ( ln_life_exp_40 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop3544_1960], fe cl(id)
est sto table_a12b3
* Column 4: 45-54
xtivreg2 lninctot4554 ( ln_life_exp_50 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop4554_1960], fe cl(id)
est sto table_a12b4
* Column 5: 55-64
xtivreg2 lninctot5564 ( ln_life_exp_60 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop5564_1960], fe cl(id)
est sto table_a12b5
* Column 6: 15-64
xtivreg2 lninctot1564 ( ln_life_exp_2060 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop_1960], fe cl(id)
est sto table_a12b6
* Column 7: 65+
xtivreg2 lninctot65p ( ln_life_exp_65 = mort_cvd_1950 mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1950 td1970 td1980 td1990 td2000 [aw=pop65p_1960], fe cl(id)
est sto table_a12b7
* Display results
esttab table_a12b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


********************************************************************************
* Table A13: Robustness: Controlling for Linear State-Time Trends


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
xtset id year, delta(10)

qui ta id, g(state_id_)
forvalues x = 1(1)48	{
	g st_trend_`x' = state_id_`x' * t
}
drop st_trend_46 st_trend_47 st_trend_48


* Table A13(a): Log wage income per person in age cohort

* Column 1: 15-24
xtivreg2 lnincwage1524 ( ln_life_exp_20 = mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_* [aw=pop1524_1960], fe cl(id) partial(lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_*)
est sto table_a13a1
* Column 2: 25-34
xtivreg2 lnincwage2534 ( ln_life_exp_30 = mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_* [aw=pop2534_1960], fe cl(id) partial(lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_*)
est sto table_a13a2
* Column 3: 35-44
xtivreg2 lnincwage3544 ( ln_life_exp_40 = mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_* [aw=pop3544_1960], fe cl(id) partial(lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_*)
est sto table_a13a3
* Column 4: 45-54
xtivreg2 lnincwage4554 ( ln_life_exp_50 = mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_* [aw=pop4554_1960], fe cl(id) partial(lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_*)
est sto table_a13a4
* Column 5: 55-64
xtivreg2 lnincwage5564 ( ln_life_exp_60 = mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_* [aw=pop5564_1960], fe cl(id) partial(lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_*)
est sto table_a13a5
* Column 6: 15-64
xtivreg2 lnincwage1564 ( ln_life_exp_2060 = mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_* [aw=pop_1960], fe cl(id) partial(lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_*)
est sto table_a13a6
* Column 7: 65+
xtivreg2 lnincwage65p ( ln_life_exp_65 = mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_* [aw=pop65p_1960], fe cl(id) partial(lnincwage1564_1950 lnincwage1564_1970 lnincwage1564_1980 lnincwage1564_1990 lnincwage1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_*)
est sto table_a13a7
* Display results
esttab table_a13a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


* Table A13(b): Log total income per person in age cohort

* Column 1: 15-24
xtivreg2 lninctot1524 ( ln_life_exp_20 = mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_* [aw=pop1524_1960], fe cl(id) partial(lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_*)
est sto table_a13b1
* Column 2: 25-34
xtivreg2 lninctot2534 ( ln_life_exp_30 = mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_* [aw=pop2534_1960], fe cl(id) partial(lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_*)
est sto table_a13b2
* Column 3: 35-44
xtivreg2 lninctot3544 ( ln_life_exp_40 = mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_* [aw=pop3544_1960], fe cl(id) partial(lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_*)
est sto table_a13b3
* Column 4: 45-54
xtivreg2 lninctot4554 ( ln_life_exp_50 = mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_* [aw=pop4554_1960], fe cl(id) partial(lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_*)
est sto table_a13b4
* Column 5: 55-64
xtivreg2 lninctot5564 ( ln_life_exp_60 = mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_* [aw=pop5564_1960], fe cl(id) partial(lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_*)
est sto table_a13b5
* Column 6: 15-64
xtivreg2 lninctot1564 ( ln_life_exp_2060 = mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_* [aw=pop_1960], fe cl(id) partial(lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_*)
est sto table_a13b6
* Column 7: 65+
xtivreg2 lninctot65p ( ln_life_exp_65 = mort_cvd_1970 mort_cvd_1980 mort_cvd_1990 mort_cvd_2000 ) lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_* [aw=pop65p_1960], fe cl(id) partial(lninctot1564_1950 lninctot1564_1970 lninctot1564_1980 lninctot1564_1990 lninctot1564_2000 shcoll_1950 shcoll_1970 shcoll_1980 shcoll_1990 shcoll_2000 mort_other_1950 mort_other_1970 mort_other_1980 mort_other_1990 mort_other_2000 td1970 td1980 td1990 td2000 st_trend_*)
est sto table_a13b7
* Display results
esttab table_a13b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


********************************************************************************
* Table A14: Robustness: No Interstate Migration


est drop _all
use "us_state_panel_1950_2000_no_migrants.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)


* Table A14(a): Log wage income per person in age cohort

* Column 1: 15-24
ivreg2 D.lnincwage1524 ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popnm1524_1960], cl(id)
est sto table_a14a1
* Column 2: 25-34
ivreg2 D.lnincwage2534 ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popnm2534_1960], cl(id)
est sto table_a14a2
* Column 3: 35-44
ivreg2 D.lnincwage3544 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popnm3544_1960], cl(id)
est sto table_a14a3
* Column 4: 45-54
ivreg2 D.lnincwage4554 ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popnm4554_1960], cl(id)
est sto table_a14a4
* Column 5: 55-64
ivreg2 D.lnincwage5564 ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popnm5564_1960], cl(id)
est sto table_a14a5
* Column 6: 15-64
ivreg2 D.lnincwage1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popnm1564_1960], cl(id)
est sto table_a14a6
* Column 7: 65+
ivreg2 D.lnincwage65p ( D.ln_life_exp_65 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popnm65p_1960], cl(id)
est sto table_a14a7	
* Display results
esttab table_a14a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


* Table A14(b): Log total income per person in age cohort

* Column 1: 15-24
ivreg2 D.lninctot1524 ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popnm1524_1960], cl(id)
est sto table_a14b1
* Column 2: 25-34
ivreg2 D.lninctot2534 ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popnm2534_1960], cl(id)
est sto table_a14b2
* Column 3: 35-44
ivreg2 D.lninctot3544 ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popnm3544_1960], cl(id)
est sto table_a14b3
* Column 4: 45-54
ivreg2 D.lninctot4554 ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popnm4554_1960], cl(id)
est sto table_a14b4
* Column 5: 55-64
ivreg2 D.lninctot5564 ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popnm5564_1960], cl(id)
est sto table_a14b5
* Column 6: 15-64
ivreg2 D.lninctot1564 ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popnm1564_1960], cl(id)
est sto table_a14b6
* Column 7: 65+
ivreg2 D.lninctot65p ( D.ln_life_exp_65 = D.mort_cvd_2000 ) D.lninctot1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popnm65p_1960], cl(id)
est sto table_a14b7
* Display results
esttab table_a14b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


********************************************************************************
* Table A15: Heterogeneity: Gender-Health-Wage Differences


est drop _all
use "us_state_panel_1960_2000_gender.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"


* Table A15(a): Second stage (2SLS)

* Column 1: 15-24
ivreghdfe lnincwage1524 ( ln_life_exp_20 = mort_cvd_2000 ) mort_other_2000 [aw=pop1524_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15a1
* Column 2: 25-34
ivreghdfe lnincwage2534 ( ln_life_exp_30 = mort_cvd_2000 ) mort_other_2000 [aw=pop2534_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15a2
* Column 3: 35-44
ivreghdfe lnincwage3544 ( ln_life_exp_40 = mort_cvd_2000 ) mort_other_2000 [aw=pop3544_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15a3
* Column 4: 45-54
ivreghdfe lnincwage4554 ( ln_life_exp_50 = mort_cvd_2000 ) mort_other_2000 [aw=pop4554_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15a4
* Column 5: 55-64
ivreghdfe lnincwage5564 ( ln_life_exp_60 = mort_cvd_2000 ) mort_other_2000 [aw=pop5564_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15a5
* Column 6: 15-64
ivreghdfe lnincwage1564 ( ln_life_exp_2060 = mort_cvd_2000 ) mort_other_2000 [aw=pop_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15a6
* Column 7: 65+
ivreghdfe lnincwage65p ( ln_life_exp_65 = mort_cvd_2000 ) mort_other_2000 [aw=pop65p_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15a7
* Display results
esttab table_a15a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


* Table A15(b): Reduced form 

* Column 1: 15-24
reghdfe lnincwage1524 mort_cvd_2000 mort_other_2000 [aw=pop1524_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15b1
* Column 2: 25-34
reghdfe lnincwage2534 mort_cvd_2000 mort_other_2000 [aw=pop2534_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15b2
* Column 3: 35-44
reghdfe lnincwage3544 mort_cvd_2000 mort_other_2000 [aw=pop3544_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15b3
* Column 4: 45-54
reghdfe lnincwage4554 mort_cvd_2000 mort_other_2000 [aw=pop4554_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15b4
* Column 5: 55-64
reghdfe lnincwage5564 mort_cvd_2000 mort_other_2000 [aw=pop5564_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15b5
* Column 6: 15-64
reghdfe lnincwage1564 mort_cvd_2000 mort_other_2000 [aw=pop_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15b6
* Column 7: 65+
reghdfe lnincwage65p mort_cvd_2000 mort_other_2000 [aw=pop65p_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15b7
* Display results
esttab table_a15b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(mort_cvd_*) obslast nonotes compress


* Table A15(c): First stage

* Column 1: 15-24
reghdfe ln_life_exp_20 mort_cvd_2000 mort_other_2000 [aw=pop1524_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15c1
* Column 2: 25-34
reghdfe ln_life_exp_30 mort_cvd_2000 mort_other_2000 [aw=pop2534_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15c2
* Column 3: 35-44
reghdfe ln_life_exp_40 mort_cvd_2000 mort_other_2000 [aw=pop3544_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15c3
* Column 4: 45-54
reghdfe ln_life_exp_50 mort_cvd_2000 mort_other_2000 [aw=pop4554_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15c4
* Column 5: 55-64
reghdfe ln_life_exp_60 mort_cvd_2000 mort_other_2000 [aw=pop5564_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15c5
* Column 6: 15-64
reghdfe ln_life_exp_2060 mort_cvd_2000 mort_other_2000 [aw=pop_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15c6
* Column 7: 65+
reghdfe ln_life_exp_65 mort_cvd_2000 mort_other_2000 [aw=pop65p_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a15c7
* Display results
esttab table_a15c*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(mort_cvd_*) obslast nonotes compress


********************************************************************************
* Table A16: Heterogeneity: Gender-Health-Income Differences


est drop _all
use "us_state_panel_1960_2000_gender.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"


* Table A16(a): Second stage (2SLS)

* Column 1: 15-24
ivreghdfe lninctot1524 ( ln_life_exp_20 = mort_cvd_2000 ) mort_other_2000 [aw=pop1524_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16a1
* Column 2: 25-34
ivreghdfe lninctot2534 ( ln_life_exp_30 = mort_cvd_2000 ) mort_other_2000 [aw=pop2534_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16a2
* Column 3: 35-44
ivreghdfe lninctot3544 ( ln_life_exp_40 = mort_cvd_2000 ) mort_other_2000 [aw=pop3544_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16a3
* Column 4: 45-54
ivreghdfe lninctot4554 ( ln_life_exp_50 = mort_cvd_2000 ) mort_other_2000 [aw=pop4554_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16a4
* Column 5: 55-64
ivreghdfe lninctot5564 ( ln_life_exp_60 = mort_cvd_2000 ) mort_other_2000 [aw=pop5564_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16a5
* Column 6: 15-64
ivreghdfe lninctot1564 ( ln_life_exp_2060 = mort_cvd_2000 ) mort_other_2000 [aw=pop_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16a6
* Column 7: 65+
ivreghdfe lninctot65p ( ln_life_exp_65 = mort_cvd_2000 ) mort_other_2000 [aw=pop65p_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16a7
* Display results
esttab table_a16a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


* Table A16(b): Reduced form

* Column 1: 15-24
reghdfe lninctot1524 mort_cvd_2000 mort_other_2000 [aw=pop1524_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16b1
* Column 2: 25-34
reghdfe lninctot2534 mort_cvd_2000 mort_other_2000 [aw=pop2534_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16b2
* Column 3: 35-44
reghdfe lninctot3544 mort_cvd_2000 mort_other_2000 [aw=pop3544_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16b3
* Column 4: 45-54
reghdfe lninctot4554 mort_cvd_2000 mort_other_2000 [aw=pop4554_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16b4
* Column 5: 55-64
reghdfe lninctot5564 mort_cvd_2000 mort_other_2000 [aw=pop5564_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16b5
* Column 6: 15-64
reghdfe lninctot1564 mort_cvd_2000 mort_other_2000 [aw=pop_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16b6
* Column 7: 65+
reghdfe lninctot65p mort_cvd_2000 mort_other_2000 [aw=pop65p_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16b7
* Display results
esttab table_a16b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(mort_cvd_*) obslast nonotes compress


* Table A16(c): First stage

* Column 1: 15-24
reghdfe ln_life_exp_20 mort_cvd_2000 mort_other_2000 [aw=pop1524_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16c1
* Column 2: 25-34
reghdfe ln_life_exp_30 mort_cvd_2000 mort_other_2000 [aw=pop2534_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16c2
* Column 3: 35-44
reghdfe ln_life_exp_40 mort_cvd_2000 mort_other_2000 [aw=pop3544_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16c3
* Column 4: 45-54
reghdfe ln_life_exp_50 mort_cvd_2000 mort_other_2000 [aw=pop4554_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16c4
* Column 5: 55-64
reghdfe ln_life_exp_60 mort_cvd_2000 mort_other_2000 [aw=pop5564_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16c5
* Column 6: 15-64
reghdfe ln_life_exp_2060 mort_cvd_2000 mort_other_2000 [aw=pop_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16c6
* Column 7: 65+
reghdfe ln_life_exp_65 mort_cvd_2000 mort_other_2000 [aw=pop65p_1960], a(stateyfe genderyfe stategender) cl(id)
est sto table_a16c7
* Display results
esttab table_a16c*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(mort_cvd_*) obslast nonotes compress


********************************************************************************
* Table A17: Heterogeneity: Health Effects by Occupation Type


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)


* Table A17(a): Log wage income of blue-collar workers

* Column 1: 15-24
ivreg2 D.(lnincwage1524_bcw) ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popbcw1524_1960], cl(id)
est sto table_a17a1
* Column 2: 25-34
ivreg2 D.(lnincwage2534_bcw) ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popbcw2534_1960], cl(id)
est sto table_a17a2
* Column 3: 35-44
ivreg2 D.(lnincwage3544_bcw) ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popbcw3544_1960], cl(id)
est sto table_a17a3
* Column 4: 45-54
ivreg2 D.(lnincwage4554_bcw) ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popbcw4554_1960], cl(id)
est sto table_a17a4
* Column 5: 55-64
ivreg2 D.(lnincwage5564_bcw) ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popbcw5564_1960], cl(id)
est sto table_a17a5
* Column 6: 15-64
ivreg2 D.(lnincwage1564_bcw) ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popbcw1564_1960], cl(id)
est sto table_a17a6
* Column 7: 65+
ivreg2 D.(lnincwage65p_bcw) ( D.ln_life_exp_65 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popbcw65p_1960], cl(id)
est sto table_a17a7	
* Display results
esttab table_a17a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


* Table A17(b): Log wage income of white-collar workers

* Column 1: 15-24
ivreg2 D.(lnincwage1524_wcw) ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popwcw1524_1960], cl(id)
est sto table_a17b1
* Column 2: 25-34
ivreg2 D.(lnincwage2534_wcw) ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popwcw2534_1960], cl(id)
est sto table_a17b2
* Column 3: 35-44
ivreg2 D.(lnincwage3544_wcw) ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popwcw3544_1960], cl(id)
est sto table_a17b3
* Column 4: 45-54
ivreg2 D.(lnincwage4554_wcw) ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popwcw4554_1960], cl(id)
est sto table_a17b4
* Column 5: 55-64
ivreg2 D.(lnincwage5564_wcw) ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popwcw5564_1960], cl(id)
est sto table_a17b5
* Column 6: 15-64
ivreg2 D.(lnincwage1564_wcw) ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popwcw1564_1960], cl(id)
est sto table_a17b6
* Column 7: 65+
ivreg2 D.(lnincwage65p_wcw) ( D.ln_life_exp_65 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popwcw65p_1960], cl(id)
est sto table_a17b7	
* Display results
esttab table_a17b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


********************************************************************************
* Table A18: Heterogeneity: Health Effects by Education Type


est drop _all
use "us_state_panel_1950_2000.dta", clear
drop if state == "District of Columbia" | state == "Alaska" | state == "Hawaii"
keep if year == 1960 | year == 2000
xtset id year, delta(40)


* Table A18(a): Log wage income of college-educated workers

* Column 1: 15-24
ivreg2 D.(lnincwage1524_coll) ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popcoll1524_1960], cl(id)
est sto table_a18a1
* Column 2: 25-34
ivreg2 D.(lnincwage2534_coll) ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popcoll2534_1960], cl(id)
est sto table_a18a2
* Column 3: 35-44
ivreg2 D.(lnincwage3544_coll) ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popcoll3544_1960], cl(id)
est sto table_a18a3
* Column 4: 45-54
ivreg2 D.(lnincwage4554_coll) ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popcoll4554_1960], cl(id)
est sto table_a18a4
* Column 5: 55-64
ivreg2 D.(lnincwage5564_coll) ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popcoll5564_1960], cl(id)
est sto table_a18a5
* Column 6: 15-64
ivreg2 D.(lnincwage1564_coll) ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popcoll1564_1960], cl(id)
est sto table_a18a6
* Column 7: 65+
ivreg2 D.(lnincwage65p_coll) ( D.ln_life_exp_65 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popcoll65p_1960], cl(id)
est sto table_a18a7
* Display results
esttab table_a18a*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


* Table A18(b): Log wage income of non-college-educated workers

* Column 1: 15-24
ivreg2 D.(lnincwage1524_ncoll) ( D.ln_life_exp_20 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popncoll1524_1960], cl(id)
est sto table_a18b1
* Column 2: 25-34
ivreg2 D.(lnincwage2534_ncoll) ( D.ln_life_exp_30 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popncoll2534_1960], cl(id)
est sto table_a18b2
* Column 3: 35-44
ivreg2 D.(lnincwage3544_ncoll) ( D.ln_life_exp_40 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popncoll3544_1960], cl(id)
est sto table_a18b3
* Column 4: 45-54
ivreg2 D.(lnincwage4554_ncoll) ( D.ln_life_exp_50 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popncoll4554_1960], cl(id)
est sto table_a18b4
* Column 5: 55-64
ivreg2 D.(lnincwage5564_ncoll) ( D.ln_life_exp_60 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popncoll5564_1960], cl(id)
est sto table_a18b5
* Column 6: 15-64
ivreg2 D.(lnincwage1564_ncoll) ( D.ln_life_exp_2060 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popncoll1564_1960], cl(id)
est sto table_a18b6
* Column 7: 65+
ivreg2 D.(lnincwage65p_ncoll) ( D.ln_life_exp_65 = D.mort_cvd_2000 ) D.lnincwage1564_2000 D.shcoll_2000 D.mort_other_2000 [aw=popncoll65p_1960], cl(id)
est sto table_a18b7
* Display results
esttab table_a18b*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep (D.ln_life_exp_*) scalars(widstat) obslast sfmt(a1) nonotes compress


********************************************************************************
* Table A19: Heterogeneity: Effect of Individual Health on Income

/*
Table A19 reports estimates that are obtained from the geo-coded Health and
Retirement Survey, which is not accessible to the public. Here I provide only
the code that was used to generate the results in Table A19.

* Data preparation

use "...\hrsxstate14.dta", clear
ren ( hhid pn ) ( hhidstr pnstr )
egen hhidpnstr = concat( hhidstr pnstr )
destring hhidpnstr, g( hhidpn )

merge 1:1 hhidpn using "...\rndhrs_p.dta"
drop if _merge != 3
drop hhidstr pnstr hhidpnstr _merge
order hhidpn, first

destring STFIPS92, g( stfips1 )
destring STFIPS94, g( stfips2 )
destring STFIPS96, g( stfips3 )
destring STFIPS98, g( stfips4 )
destring STFIPS00, g( stfips5 )
destring STFIPS02, g( stfips6 )
destring STFIPS04, g( stfips7 )
destring STFIPS06, g( stfips8 )
destring STFIPS08, g( stfips9 )
destring STFIPS10, g( stfips10 )
destring STFIPS12, g( stfips11 )
destring STFIPS14, g( stfips12 )

destring STFIPS93, g( stfips2_star ) 
destring STFIPS95, g( stfips3_star ) 

replace stfips2 = stfips2_star if missing(stfips2) & !missing(stfips2_star)
replace stfips3 = stfips3_star if missing(stfips3) & !missing(stfips3_star)
assert !missing(stfips2) if !missing(stfips2_star)
assert !missing(stfips3) if !missing(stfips3_star)
drop stfips2_star stfips3_star

keep hhidpn inw* *hearte *stroke *hibpe *agey_m ragender raedyrs raedegrm *cenreg *iearn *atota rabyear *lbrf *jcten *fsize *retemp rabplace raracem hacohort stfips*
reshape long inw@ r@hearte r@stroke r@hibpe r@agey_m r@cenreg stfips@ 	r@iearn h@atota r@lbrf r@jcten r@fsize r@retemp r@inlbrf, i(hhidpn) j(wave)
	
* Inflation-adjustment
replace riearn = riearn * 1.601 if wave == 1
replace riearn = riearn * 1.509 if wave == 2 & hacohort == 3
replace riearn = riearn * 1.431 if wave == 3 & hacohort == 3
replace riearn = riearn * 1.554 if wave == 2 & hacohort == 0 | wave == 2 & hacohort == 1
replace riearn = riearn * 1.471 if wave == 3 & hacohort == 0 | wave == 3 & hacohort == 1
replace riearn = riearn * 1.359 if wave == 4
replace riearn = riearn * 1.309 if wave == 5
replace riearn = riearn * 1.231 if wave == 6
replace riearn = riearn * 1.185 if wave == 7
replace riearn = riearn * 1.117 if wave == 8
replace riearn = riearn * 1.052 if wave == 9
replace riearn = riearn * 1.016 if wave == 10
replace riearn = riearn * 0.969 if wave == 11
replace riearn = riearn * 0.936 if wave == 12

* Cohort-identifier
g rabyear_1910 =.
replace rabyear_1910 = 0 if !missing(rabyear)
replace rabyear_1910 = 1 if rabyear <= 1910
ta rabyear_1910
g rabyear_1920 =.
replace rabyear_1920 = 0 if !missing(rabyear)
replace rabyear_1920 = 1 if rabyear <= 1920
g rabyear_1930 =.
replace rabyear_1930 = 0 if !missing(rabyear)
replace rabyear_1930 = 1 if rabyear <= 1930
g rabyear_1940 =.
replace rabyear_1940 = 0 if !missing(rabyear)
replace rabyear_1940 = 1 if rabyear <= 1940
g rabyear_1950 =.
replace rabyear_1950 = 0 if !missing(rabyear)
replace rabyear_1950 = 1 if rabyear <= 1950
g rabyear_1910_1930 =.
replace rabyear_1910_1930 = 0 if !missing(rabyear)
replace rabyear_1910_1930 = 1 if rabyear > 1910 & rabyear <= 1930

g born_1910 =.
replace born_1910 = 0 if !missing(rabyear)
replace born_1910 = 1 if rabyear <= 1910
g born_1910_1920 =.
replace born_1910_1920 = 0 if !missing(rabyear)
replace born_1910_1920 = 1 if rabyear > 1910 & rabyear <= 1920
g born_1920_1930 =.
replace born_1920_1930 = 0 if !missing(rabyear)
replace born_1920_1930 = 1 if rabyear > 1920 & rabyear <= 1930
g born_1930_1940 =.
replace born_1930_1940 = 0 if !missing(rabyear)
replace born_1930_1940 = 1 if rabyear > 1930 & rabyear <= 1940
g born_1940_1950 =.
replace born_1940_1950 = 0 if !missing(rabyear)
replace born_1940_1950 = 1 if rabyear > 1940 & rabyear <= 1950
g born_1950 =.
replace born_1950 = 0 if !missing(rabyear)
replace born_1950 = 1 if rabyear > 1950

g ln_income = .
replace ln_income = ln( riearn ) if riearn > 0
la var ln_income "Log income earnings"

replace stfips =. if stfips == 72

egen pid = group(hhidpn)
egen wid = group(wave)
xtset pid wid

* Column 1: Without interaction
xtreg ln_income i.rhibpe i.rcenreg##i.wave c.ragey_m##c.ragey_m##c.ragey_m##c.ragey_m i.stfips, fe r
	qui ta rhibpe if rhibpe == 1 & e(sample) == 1
	estadd loc N_hc "`r(N)'"
	estadd loc N_b1910 "---"
	est sto table_a191
* Column 2: Interaction with cohort dummy for 1910
xtreg ln_income i.rhibpe##i.rabyear_1910 i.rcenreg##i.wave c.ragey_m##c.ragey_m##c.ragey_m##c.ragey_m i.stfips, fe r
	qui ta rhibpe if rhibpe == 1 & e(sample) == 1
	estadd loc N_hc "`r(N)'"
	qui ta rabyear_1910 if rabyear_1910 == 1 & e(sample) == 1
	estadd loc N_b1910 "`r(N)'"
	est sto table_a192
* Column 3: Interaction with cohort dummy for 1920
xtreg ln_income i.rhibpe##i.rabyear_1920 i.rcenreg##i.wave c.ragey_m##c.ragey_m##c.ragey_m##c.ragey_m i.stfips, fe r
	qui ta rhibpe if rhibpe == 1 & e(sample) == 1
	estadd loc N_hc "`r(N)'"
	qui ta rabyear_1920 if rabyear_1920 == 1 & e(sample) == 1
	estadd loc N_b1910 "`r(N)'"
	est sto table_a193
* Column 4: Interaction with cohort dummy for 1930
xtreg ln_income i.rhibpe##i.rabyear_1930 i.rcenreg##i.wave c.ragey_m##c.ragey_m##c.ragey_m##c.ragey_m i.stfips, fe r
	qui ta rhibpe if rhibpe == 1 & e(sample) == 1
	estadd loc N_hc "`r(N)'"
	qui ta rabyear_1930 if rabyear_1930 == 1 & e(sample) == 1
	estadd loc N_b1910 "`r(N)'"
	est sto table_a194
* Column 5: Interaction with cohort dummy for 1940
xtreg ln_income i.rhibpe##i.rabyear_1940 i.rcenreg##i.wave c.ragey_m##c.ragey_m##c.ragey_m##c.ragey_m i.stfips, fe r
	qui ta rhibpe if rhibpe == 1 & e(sample) == 1
	estadd loc N_hc "`r(N)'"
	qui ta rabyear_1940 if rabyear_1940 == 1 & e(sample) == 1
	estadd loc N_b1910 "`r(N)'"
	est sto table_a195
* Column 6: Interaction with cohort dummy for 1950
xtreg ln_income i.rhibpe##i.rabyear_1950 i.rcenreg##i.wave c.ragey_m##c.ragey_m##c.ragey_m##c.ragey_m i.stfips, fe r
	qui ta rhibpe if rhibpe == 1 & e(sample) == 1
	estadd loc N_hc "`r(N)'"
	qui ta rabyear_1950 if rabyear_1950 == 1 & e(sample) == 1
	estadd loc N_b1910 "`r(N)'"
	est sto table_a196
* Display results
esttab table_a19*, b(%3.2f) se(%3.2f) star(* .1 ** .05 *** .01) keep(1.rhibpe 1.rhibpe#1.rabyear_*) obslast nonotes scalars("N_hc" "N_b1910" N_g) sfmt(a1) compress
*/


********************************************************************************
********************************************************************************